@ECHO OFF
:: No parameters required
IF NOT [%1]==[] GOTO Syntax

:: Choose the correct command processor for the current operating system
SET _cmd=
:: Variable to add shortcut to menu entry (NT only,
:: since COMMAND.COM cannot echo an ampersand)
SET _=
ECHO.%COMSPEC% | FIND /I "command.com" >NUL
IF NOT ERRORLEVEL 1 SET _cmd=command.com /e:4096
ECHO.%COMSPEC% | FIND /I "cmd.exe" >NUL
IF NOT ERRORLEVEL 1 SET _cmd=cmd.exe
IF [%_cmd%]==[cmd.exe] SET _=^&

:: Create a temporary .REG file
> "%Temp%.\DefOpen.reg" ECHO REGEDIT4
>>"%Temp%.\DefOpen.reg" ECHO.
ECHO Adding "Open with Notepad" entry
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\open]
>>"%Temp%.\DefOpen.reg" ECHO @="%_%Open with Notepad"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\open\command]
>>"%Temp%.\DefOpen.reg" ECHO @="notepad.exe \"%%1\""
>>"%Temp%.\DefOpen.reg" ECHO.
ECHO Adding "Print with Notepad" entry
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\print]
>>"%Temp%.\DefOpen.reg" ECHO @="%_%Print with Notepad"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\print\command]
>>"%Temp%.\DefOpen.reg" ECHO @="notepad.exe /p \"%%1\""
>>"%Temp%.\DefOpen.reg" ECHO.

:: If neither COMMAND.COM nor CMD.EXE then skip this step
IF [%_cmd%]==[] ECHO Skipping "Command Prompt Here" entry
IF [%_cmd%]==[] GOTO Merge

ECHO Adding "Command Prompt Here" entry
:: Add Command Prompt Here for files
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\prompt]
>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\prompt\command]
>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\\..\""
>>"%Temp%.\DefOpen.reg" ECHO.
:: Add Command Prompt Here for directories
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Directory\shell\prompt]
>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Directory\shell\prompt\command]
>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\""
>>"%Temp%.\DefOpen.reg" ECHO.
:: Add Command Prompt Here for drives
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Drive\shell\prompt]
>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Drive\shell\prompt\command]
>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\""
>>"%Temp%.\DefOpen.reg" ECHO.

:: Merge the temporary .REG file
:Merge
START /WAIT REGEDIT /S "%Temp%.\DefOpen.reg"

:: Delete the temporary .REG file
DEL "%Temp%.\DefOpen.reg"

:: Ready
GOTO End

:Syntax
ECHO.
ECHO DefOpen.bat,  Version 3.00 for Windows 95/98/NT 4/2000/XP
ECHO Adds a default association: when a file without a file association
ECHO is double-clicked, it will be opened with Notepad.
ECHO Adds three new entries to the right mouse button menu as well:
ECHO "Open with Notepad", "Print with Notepad" and "Command Prompt Here".
ECHO.
ECHO Usage:  DEFOPEN
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
ECHO Notepad registry tip courtesy of Regedit.com
ECHO http://www.regedit.com

:: Clean up variables and quit
:End
SET _cmd=
SET _=
